#ifndef __OSA_H__
#define __OSA_H__

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <semaphore.h>					//信号量 sem_t
#include <pthread.h>
#include "string.h"

//整数的循环缓冲区。
#define OSA_PHOTO           0
#define OSA_VIDEO           1
#define OSA_CAMERA_PHOTO    2


#define OSA_BUFFER_SIZE 100



//信号量的数据类型为结构sem_t，它本质上是一个长整型的数。
typedef struct OSA_MSG
{
    sem_t lock;  						//互斥锁确保对缓冲区的独占访问
    sem_t empty;  						//缓冲区不为空时发出信号
    sem_t full;  						//缓冲区未满时发出信号
	int readpos, writepos;  			//读写位置
	int buffer[OSA_BUFFER_SIZE];  		//实际数据
	int size;
} OSA_MSG;

typedef void * (*pFunc)(void * paramter);
void OSA_MSG_Init(int os_msg_id,int size,pFunc func);
void OSA_MSG_Init_One(int os_msg_id,pFunc func);
void OSA_MSG_Put(int os_msg_id,int data);
int OSA_MSG_Get(int os_msg_id);
#endif

